package com.irdstudio.efp.flow.service.facade;

import java.util.List;

import com.irdstudio.efp.flow.common.vo.AprvUserVO;
import com.irdstudio.efp.flow.service.vo.FlowAprvUserInqVO;
import com.irdstudio.efp.flow.service.vo.InstFlowProcessVO;

/**
 * 
 * 
 * 
 * @author Cytus_
 * @since 2018年5月8日 下午7:21:31
 * @version 1.0
 *
 */
public interface InstFlowProcessService {
	
	/**
	 * 根据节点编号查询信息
	 * @param instanceId
	 * @return
	 */
	public InstFlowProcessVO queryByNodeInstanceId(String instanceId);
	
	/**
	 * 新增
	 * @param vo
	 * @return
	 */
	public int insertInstFlowProcess(InstFlowProcessVO vo);
	
	/**
	 * 更新节点状态
	 * @param vo
	 * @return
	 */
	public int updateNodeStatusByInstNodeId(InstFlowProcessVO vo);
	
	
	/**
	 * 更新审批信息
	 * @param vo
	 * @return
	 */
	public int updateApproveInfoByNodeInstId(InstFlowProcessVO vo);
	
	
	/**
	 * 更新审批人信息
	 * @param vo
	 * @return
	 */
	public int updateAprvUserInfoByNodeInstId(InstFlowProcessVO vo);
	
	/**
	 * 查询不满足当前事件当前节点配置最大任务书的userid
	 * @param vo
	 * @return
	 */
	public List<String> queryDissatisfyAprvMaxUsers(FlowAprvUserInqVO vo);

	/**
	 * 查询所有信息通过事件实例号(业务流水号)
	 * @param bizSerno
	 * @return
	 */
	public List<InstFlowProcessVO> queryAllByBizSerno(String bizSerno);
	
	public List<String> queryCanClaimNodes(String userId, List<String> dutyCode) ;
	
	public Integer taskClaim(List<String> nodes, AprvUserVO aprvUserVo,String bizSerno);

	public List<InstFlowProcessVO> queryAllByBizSernoAndConditon(InstFlowProcessVO vo);

	public int countTasksNum(String userCode);

	public int deleteByPk(InstFlowProcessVO vo);

	/**
	 * 根据用户信息查询是否还有带待处理的数据
	 * @author xiezw
	 * @params  * @param null
	 * @return
	 * @date 2019/11/22 11:17
	 * @version 0.1
	 */
	public int queryByUserInfo(InstFlowProcessVO vo);

	public String queryStageByInstNodeId(String instNodeId);
}
